package com.leetcode.easy;

/**
 * @author zfl
 * @Classname TwoSum
 * @Description 输入有序数组返回两数之和的下表
 * @Date 2020/10/3 21:29
 */
public class TwoSum {

    /**
     * @param numbers
     * @param target
     * @return
     * 双指针法、有序数组
     * 执行用时：1 ms, 在所有 Java 提交中击败了96.61%的用户
     * 内存消耗：39.2 MB, 在所有 Java 提交中击败了42.17%的用户
     */
    public int[] twoSum(int[] numbers, int target) {
        int low = 0, high = numbers.length - 1;
        while (low < high) {
            int sum = numbers[low] + numbers[high];
            if (sum == target) {
                return new int[]{low + 1, high + 1};
            } else if (sum < target) {
                ++low;
            } else {
                --high;
            }
        }
        return new int[]{-1, -1};
    }
}
